package com.itdfq.algorithm.resursion;

/**
 *
 *   <p/>
 * 函数（方法）调用自身的过程称为递归，调用自身的函数称为递归函数，用递归方式解决问题的算法称为递归算法
 * 设计递归函数时，我们必须为它设置一个结束递归的“出口”，否则函数会一直调用自身（死循环），直至运行崩溃。
 * <p/>
 * 递归求n!
 * <p/>
 * 0的阶乘 = 1 --------------------------
 * 因为本来n（n是正整数）的阶乘就是从1×2×……×n这n个数相乘。但是这个定义对0就无效了。
 * 那么人们只能根据不同数的阶乘关系来扩展定义。从正整数的阶乘能看出来，
 * （n+1）！÷n！=n+1，所以n！=（n+1）！÷（n+1）。
 * 那么把这个式子扩展到0上，就得到0！=1！÷1=1÷1=1。就是这样扩展定义的。
 * @author Administrator
 *
 */

public class Recursion {
    public static void main(String[] args) {
        int compute = compute(-1);
        System.out.println(compute);
    }


    public static int compute(Integer n) {
        if (n == 1 || n == 0) {
            return 1;
        }
        return n * compute(n - 1);
    }
}
